package com.atguigu.cloud.controller;

import cn.hutool.core.util.IdUtil;
import com.atguigu.cloud.resp.ResultData;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.concurrent.TimeUnit;

/**
 * ClassName: PayCircuitController
 * Package: com.atguigu.cloud.controller
 * Description:
 *
 * @Author 加油-ssj
 * @Create 2025/3/26 15:32
 * @Version 1.0
 */
@RestController
public class PayCircuitController {

    @GetMapping("/pay/circuit/{id}")
    public String myCircuit(@PathVariable("id") Integer id){

        if(id == -4) {throw new RuntimeException("----circuit id 不能负数");}
        if(id == 9999){
            try { TimeUnit.SECONDS.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); }
        }
        return "Hello, circuit! inputId:  "+id+" \t " + IdUtil.simpleUUID();
    }

    //=========Resilience4j bulkhead 的例子
    @GetMapping(value = "/pay/bulkhead/{id}")
    public ResultData<String> mySemaphore(@PathVariable("id") Integer id) {
        if (id < 0) {
            throw new RuntimeException("Id不能为负数 ... ");
        }
        if (id == 45) {
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        return ResultData.success("Hello" + id + IdUtil.simpleUUID());
    }
//    public String myBulkhead(@PathVariable("id") Integer id)
//    {
//        if(id == -4) {
//            throw new RuntimeException("----bulkhead id 不能-4");
//        }
//
//        if(id == 9999) {
//            try {
//                TimeUnit.SECONDS.sleep(5);
//            }
//            catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//        }
//        return "Hello, bulkhead! inputId:  "+id+" \t " + IdUtil.simpleUUID();
//    }

    //=========Resilience4j ratelimit 的例子
    @GetMapping(value = "/pay/ratelimit/{id}")
    public String myRatelimit(@PathVariable("id") Integer id)
    {
        return "Hello, myRatelimit欢迎到来 inputId:  "+id+" \t " + IdUtil.simpleUUID();
    }

}
